package com.dtx.state;

/**
 * NightSate类表示晚上的状态。它与DayState类一样,也使用了Singleton模式。
 * NightSate类的结构与DayState完全相同,此处不在赘述。
 */
public class NightSate implements State{

    private static NightSate singleton = new NightSate();

    //构造函数的可见性是private
    private NightSate(){

    }

    /**
     * 获取唯一实例
     * @return
     */
    public static State getInstance(){
        return singleton;
    }

    /**
     * 设置时间
     * @param context
     * @param hour
     */
    @Override
    public void doClock(Context context, int hour) {
        if(9 <= hour && hour < 17){
            context.changeState(DayState.getInstance());
        }
    }

    /**
     * 使用金库
     * @param context
     */
    @Override
    public void doUse(Context context) {
        context.callSecurityCenter("紧急：晚上使用金库！");
    }

    /**
     * 按下警铃
     * @param context
     */
    @Override
    public void doAlarm(Context context) {
        context.callSecurityCenter("按下警铃(晚上)");
    }

    /**
     * 正常通话
     * @param context
     */
    @Override
    public void adPhone(Context context) {
        context.recordLog("晚上的通话录音");
    }

    /**
     * 显示表示类的文字
     * @return
     */
    @Override
    public String toString() {
        return "[晚上]";
    }
}
